/**
 * 底层二叉树排序方式
 * 1.先序遍历 （根->左->右）
 * 2.中序遍历 （左->根->右）
 * 3.后序遍历	（左->右->根)
 * Treeset
 * #############
 * Treeset重点在如何去对自定义类进行排序
 * #############
 * Public class TreeSet<E>extends AbstractSet<E>implements NavigableSet<E>,Cloneable,Serializable
 * 基于TreeMap 的NavigableSet实现。使用元素的自然顺序对元素进行排序，或者根据创建set时提供的Comparator进行排序，具体取决于使用的构造方法。
 *----LinkedHashSet----
 *哈希表+链表
 *自然排序
 *
 *1.随机无序 --HashSet -> 2.顺序 --LinkedHashSet -->3.排序 --TreeSet
 */
/*
package com.leo.第九章_集合;
import java.util.TreeSet;
import java.util.Comparator;
import java.util.LinkedHashSet;
public class U9_L3_Set接口_treeset类_linkedhashset类 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		treeset();
		linkedhashset();
	}
	private static void treeset() {
		//可以自定义排序顺序
		TreeSet<Cat> t=new TreeSet<>(new Catcompare());
		Cat c=new Cat("xiao hong",5,0);
		Cat c1=new Cat("xiao fang",3,1);
		Cat c2=new Cat("xiao qu",1,2);
		t.add(c);
		t.add(c1);
		t.add(c2);
		System.out.println("----TreeSet----");
		System.out.println("t.size:"+t.size());
		for(Cat ele:t) {
			System.out.println(ele);
		}
	}
	private static void linkedhashset() {
		//排序方式就是自然排序方式 根据add顺序排序
		Cat c=new Cat("xiao hong",5,0);
		Cat c1=new Cat("xiao fang",3,1);
		Cat c2=new Cat("xiao qu",1,2);
		LinkedHashSet<Cat>lhs=new LinkedHashSet<>();
		lhs.add(c1);
		lhs.add(c2);
		lhs.add(c);
		
		System.out.println("----LinkedHashSet-----");
		System.out.println("lhs.size:"+lhs.size());
		for(Cat ele:lhs){
			System.out.println(ele);
		}
	}
}

class Cat{
	String name;
	int age;
	int id;
	 
	public Cat(String name, int age, int id) {
		super();
		this.name = name;
		this.age = age;
		this.id = id;
	}
	@Override
	public String toString() {
		return "Cat [name=" + name + ", age=" + age + ", id=" + id + "]";
	}
	
}
class Catcompare implements Comparator<Cat>{

	@Override
	public int compare(Cat o1, Cat o2) {
		 
		return o1.age-o2.age;
	}
	
}
*/